//多线程
//2023/04/26

//需求：创建两个线程 一个线程自+1，另外一个自-1

public class Main {
    static int num=0;
    public static void main(String[] args) {
        //多线程的实现 两种方式
        //继承Thread类和实现Runnable接口

        //第一种方式实现多继承
        TestThreadNo1 t1=new TestThreadNo1();
        TestThreadNo2 t2=new TestThreadNo2();

        //启动线程
        t1.start();
        t2.start();


        //第二种方式 实现Runnable接口创建线程
        Thread t3=new Thread(new RunnableDemo());
        //t3.start();

        //leamda表达式写多线程 也是去Runnalbe
        Thread t4= new Thread(()->{
            while (true){
                System.out.println("利用leamda表达式写多继承");
            }
        });
    }

    public static class TestThreadNo1 extends Thread{
        @Override
        public void run() {
            while (true){
                num++;
              //System.out.println("打印的run方法1");
              System.out.println("num="+num);
              //让当线程睡眠--
                try {
                    Thread.sleep(500);
                } catch (InterruptedException e) {
                    throw new RuntimeException(e);
                }
            }

        }
    }
    public static class TestThreadNo2 extends Thread{
        @Override
        public void run() {
            while (true){
                num--;
             //System.out.println("打印的run方法2");
             System.out.println("num="+num);
                try {
                    Thread.sleep(500);
                } catch (InterruptedException e) {
                    throw new RuntimeException(e);
                }
            }
        }
    }

    private static class RunnableDemo implements Runnable{
     //继承Runnalbe 实现多线程 实现Run方法
        @Override
        public void run() {
            while (true){
                System.out.println("继承Runnable实现多线程");
            }
        }
    }


}